Selection Sort এবং Insertion Sort গাইড ও নোট

Computer Programming - সি দিয়ে ডেটা স্ট্রাকচার (DSA using C) - সর্টিং এলগরিদম (Sorting Algorithms in C)
554

Selection Sort এবং Insertion Sort হল দুটি সহজ এবং মৌলিক সর্টিং অ্যালগরিদম। উভয়ই সাধারণত শিক্ষার উদ্দেশ্যে ব্যবহৃত হয় এবং ছোট ডেটা সেটের জন্য কার্যকরী।


১. Selection Sort

১.১ Selection Sort এর ধারণা

Selection Sort হল একটি সর্টিং অ্যালগরিদম যা প্রতিটি ধাপে সর্বনিম্ন (বা সর্বাধিক) উপাদানকে খুঁজে বের করে এবং সেটিকে প্রথম অবস্থানে স্থাপন করে। এটি n সংখ্যক ধাপে কাজ করে, যেখানে প্রতিটি ধাপে একটি ন্যূনতম উপাদান খোঁজা হয়।

১.২ C প্রোগ্রামে Selection Sort উদাহরণ

#include <stdio.h>

// Function to perform Selection Sort
void selectionSort(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        int minIndex = i; // Assume the minimum is the first element
        for (int j = i + 1; j < size; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j; // Update minIndex if a smaller element is found
            }
        }
        // Swap the found minimum element with the first element
        int temp = arr[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int size = sizeof(arr) / sizeof(arr[0]);

    selectionSort(arr, size);

    printf("Sorted array: \n");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

১.৩ Selection Sort এর বিশ্লেষণ

Worst Case Time Complexity: O(n²)
(সবচেয়ে খারাপ ক্ষেত্রে, প্রতিটি উপাদানের জন্য পুরো তালিকাটি অনুসন্ধান করতে হয়।)

Best Case Time Complexity: O(n²)
(এটি কোন ভাল পরিস্থিতিতে উন্নতি করে না, কারণ প্রতিটি উপাদানকে পরীক্ষা করতে হয়।)

Average Case Time Complexity: O(n²)
(গড় ক্ষেত্রে, আবার n² তুলনা করতে হয়।)

Space Complexity: O(1)
(এই অ্যালগরিদম স্থান সঞ্চয় করে, কারণ এটি ইনপুট অ্যারে ছাড়া অতিরিক্ত স্থান ব্যবহার করে না।)


২. Insertion Sort

২.১ Insertion Sort এর ধারণা

Insertion Sort হল একটি সর্টিং অ্যালগরিদম যা একটি তালিকার উপাদানগুলোকে একটি সাজানো অংশে একে একে যুক্ত করে। এটি কার্যকরভাবে কাজ করে এবং বিশেষ করে ছোট ডেটা সেটের জন্য খুব কার্যকরী।

২.২ C প্রোগ্রামে Insertion Sort উদাহরণ

#include <stdio.h>

// Function to perform Insertion Sort
void insertionSort(int arr[], int size) {
    for (int i = 1; i < size; i++) {
        int key = arr[i];
        int j = i - 1;

        // Move elements of arr[0..i-1], that are greater than key, to one position ahead
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key; // Insert key at the correct position
    }
}

int main() {
    int arr[] = {12, 11, 13, 5, 6};
    int size = sizeof(arr) / sizeof(arr[0]);

    insertionSort(arr, size);

    printf("Sorted array: \n");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

২.৩ Insertion Sort এর বিশ্লেষণ

Worst Case Time Complexity: O(n²)
(যখন তালিকা পুরোপুরি বিপরীত ক্রমে সাজানো থাকে।)

Best Case Time Complexity: O(n)
(যখন তালিকা ইতিমধ্যেই সাজানো থাকে।)

Average Case Time Complexity: O(n²)
(গড় ক্ষেত্রে, এটি প্রায় n² তুলনা করতে হয়।)

Space Complexity: O(1)
(Insertion Sort স্থান সঞ্চয় করে, কারণ এটি ইনপুট অ্যারে ছাড়া অতিরিক্ত স্থান ব্যবহার করে না।)


৩. Selection Sort এবং Insertion Sort এর তুলনা

বৈশিষ্ট্যSelection SortInsertion Sort
Time ComplexityO(n²)O(n²) (Worst) / O(n) (Best)
Space ComplexityO(1)O(1)
Stableনা (Unstable)হ্যাঁ (Stable)
Best forছোট ডেটা সেটইতিমধ্যেই সাজানো তালিকা
Swap Countঅনেক বেশিকম
Content added By
Promotion

Are you sure to start over?

Loading...